package com.gf.user.service;

import java.util.HashMap;
import java.util.List;

import com.gf.base.type.BloodType;
import com.gf.base.type.Sex;
import com.gf.user.model.User;

/**
 * 这些操作主要是在个人主页上里的
 * 
 * @author zhuguifeng
 * 
 */
public interface UserService {

	/**
	 * 当用户激活帐号后，初始化其<br>
	 * 个人金额信息<br>
	 * 关注粉丝信息<br>
	 * 
	 * @param userId
	 */
	public void initUser(long userId);

	/**
	 * 修改头像
	 * 
	 * @param protraitUrl
	 *            头像的相对地址
	 */
	public void changeProtrait(long id, String protraitUrl);

	/**
	 * 得到头像的地址
	 * 
	 * @param id
	 * @return
	 */
	public String getProtrait(long id);

	/**
	 * 得到所有昵称: key->"nickname"<br>
	 * 和UID:key->"uid";
	 * 
	 * @return
	 */
	public HashMap<String, List<String>> getAllNicknameAndUid();

	/**
	 * 通过ID
	 * 
	 * @param id
	 * @return
	 */
	public User getUserById(long id);

	/**
	 * 设置更新
	 * 
	 * @param sex
	 * @param bloodType
	 * @param income
	 * @param experience
	 * @return
	 */
	public boolean setupUpdate(Long userId, Sex sex, BloodType bloodType,
			String income, String experience);

	/**
	 * 发送绑定手机验证码
	 * 
	 * @param userId
	 * @param smsMob
	 *            手机号码
	 * @return 成功>0;失败：-1
	 */
	public long sendMobileCode(long userId, String smsMob);

	/**
	 * 1小时之内有效 检验验证码是否有效<br>
	 * 有效返回true,并将手机信息写入到user.mobile<br>
	 * 返回false
	 * 
	 * @param userId
	 * @param code
	 * @return
	 */
	public boolean verifyMobileCode(long userId, String code);

	/**
	 * 上传执照<br>
	 * 并更新LicenseState为checking
	 * 
	 * @param userId
	 * @param newPath
	 */
	public void uploadLicense(long userId, String newPath);

	/**
	 * 用户登入成功后，更新<br>
	 * 最近一次登入时间<br>
	 * 和IP地址
	 * 
	 * @param userId
	 */
	public void changeLoginUserInfo(long userId);
}
